home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / demow32s.zip / SOURCE.ZIP / USECT3D.CPP < prev    next >
C/C++ Source or Header  |  1993-06-06  |  5KB  |  166 lines

  1. #include <windows.h>
  2. #include <windowsx.h>
  3.  
  4. #include <commdlg.h>
  5. #include <shellapi.h>
  6. #include <string.h>
  7. #include <stdlib.h>
  8.  
  9. #include "usect3d.h"
  10.  
  11. #ifndef CTL3D_ALL
  12. #define CTL3D_ALL               0xffff
  13. #endif
  14.  
  15. #ifdef WIN32
  16. #define _export
  17. #endif
  18.  
  19. static HINSTANCE hInstCtl3D = NULL;
  20. static BOOL fCtlLoad = FALSE;
  21. static LPFNHOOK CDHook = NULL;
  22.  
  23. BOOL CALLBACK _export CDLGProc(HWND hwnd,int wm,WPARAM wParam,LPARAM lParam)
  24. {
  25.   switch(wm)
  26.     {
  27.     case WM_INITDIALOG:
  28.       useCtl3dSubclassDlg(hwnd,CTL3D_ALL);
  29.       break;
  30.  
  31.     //case WM_CTLCOLOR:
  32.     //   return (UINT)GetStockObject(GRAY_BRUSH);
  33. //    case WM_CTLCOLOR:
  34. //        return (UINT)useCtl3dCtlColorEx(wm, wParam, lParam);
  35.     }
  36.   return FALSE;
  37. }
  38.  
  39. LPFNHOOK GetCDLGProc(void)
  40. {
  41.   if (!fCtlLoad) return NULL;
  42.   return CDHook;
  43. }
  44.  
  45. BOOL GetCtl3dState(void)
  46. {
  47.   return fCtlLoad;
  48. }
  49.  
  50. BOOL LoadRegistCtlModule(HANDLE hInst)
  51. {
  52. typedef BOOL (FAR PASCAL *LPCTL3DREGISTER) (HANDLE);
  53. LPCTL3DREGISTER lpCtl3dRegister;
  54.   #ifdef WIN32
  55.   hInstCtl3D = LoadLibrary("CTL3D32.DLL");
  56.   fCtlLoad = (hInstCtl3D != NULL) ;
  57.   #else
  58.   hInstCtl3D = LoadLibrary("CTL3D.DLL");
  59.   fCtlLoad = (hInstCtl3D > HINSTANCE_ERROR);
  60.   #endif
  61.  
  62.   if (fCtlLoad)
  63.     {
  64.       lpCtl3dRegister =
  65.              (LPCTL3DREGISTER)GetProcAddress(hInstCtl3D,"Ctl3dRegister");
  66.       if (lpCtl3dRegister == NULL)
  67.         {
  68.           FreeLibrary(hInstCtl3D);
  69.           fCtlLoad = FALSE;
  70.         }
  71.        else
  72.         {
  73.           (*lpCtl3dRegister)(hInst);
  74.           //CDHook = (LPFNHOOK)MakeProcInstance((FARPROC)CDLGProc,hInst);
  75.           CDHook = (LPFNHOOK)CDLGProc;
  76.         }
  77.     }
  78.   return fCtlLoad;
  79. }
  80.  
  81. BOOL useCtl3dUnregister(HANDLE hInst)
  82. {
  83. BOOL fRet;
  84. typedef BOOL (FAR PASCAL *LPCTL3DUNREGISTER) (HANDLE);
  85. LPCTL3DUNREGISTER lpCtl3dUnregister;
  86.   if (!fCtlLoad) return FALSE;
  87.   //FreeProcInstance((FARPROC)CDHook);
  88.   lpCtl3dUnregister =
  89.      (LPCTL3DUNREGISTER)GetProcAddress(hInstCtl3D,"Ctl3dUnregister");
  90.   if (lpCtl3dUnregister == NULL) return FALSE;
  91.   fRet = (*lpCtl3dUnregister)(hInst);
  92.   FreeLibrary(hInstCtl3D);
  93.   return fRet;
  94. }
  95.  
  96. BOOL useCtl3dAutoSubclass(HANDLE hInst)
  97. {
  98. typedef BOOL (FAR PASCAL *LPCTL3DAUTOSUBCLASS) (HANDLE);
  99. LPCTL3DAUTOSUBCLASS lpCtl3dAutoSubClass;
  100.   if (!fCtlLoad) return FALSE;
  101.     lpCtl3dAutoSubClass =
  102.         (LPCTL3DAUTOSUBCLASS)GetProcAddress(hInstCtl3D,"Ctl3dAutoSubclass");
  103.   if (lpCtl3dAutoSubClass == NULL) return FALSE;
  104.   return (*lpCtl3dAutoSubClass)(hInst);
  105. }
  106.  
  107. BOOL useCtl3dSubclassDlg(HWND hWnd, WORD word)
  108. {
  109. typedef BOOL (FAR PASCAL * LPCTL3DSUBCLASSDLG) (HWND hWnd, WORD word);
  110. LPCTL3DSUBCLASSDLG lpCtl3dSubclassDlg;
  111. //MessageBox(0,"a","A",0);
  112.   if (!fCtlLoad) return FALSE;
  113.   lpCtl3dSubclassDlg =
  114.     (LPCTL3DSUBCLASSDLG) GetProcAddress(hInstCtl3D,"Ctl3dSubclassDlg");
  115.   if (lpCtl3dSubclassDlg == NULL) return FALSE;
  116. //MessageBox(0,"B","B",0);
  117.   return (*lpCtl3dSubclassDlg)(hWnd,word);
  118. }
  119.  
  120. BOOL useCtl3dSubclassCtl(HWND hWnd)
  121. {
  122. typedef BOOL (FAR PASCAL * LPCTL3DSUBCLASSCTL) (HWND hWnd);
  123. LPCTL3DSUBCLASSCTL lpCtl3dSubclassCtl;
  124.   if (!fCtlLoad) return FALSE;
  125.   lpCtl3dSubclassCtl =
  126.     (LPCTL3DSUBCLASSCTL) GetProcAddress(hInstCtl3D,"Ctl3dSubclassCtl");
  127.   if (lpCtl3dSubclassCtl == NULL) return FALSE;
  128.   return (*lpCtl3dSubclassCtl)(hWnd);
  129. }
  130.  
  131.  
  132. BOOL useCtl3dColorChange(void)
  133. {
  134. typedef BOOL (FAR PASCAL *LPUSECTL3DCOLORCHANGE)(void);
  135. LPUSECTL3DCOLORCHANGE lpCtl3dColorChange;
  136.   if (!fCtlLoad) return FALSE;
  137.   lpCtl3dColorChange =
  138.     (LPUSECTL3DCOLORCHANGE) GetProcAddress(hInstCtl3D,"Ctl3dColorChange");
  139.   if (lpCtl3dColorChange == NULL) return FALSE;
  140.   return (*lpCtl3dColorChange)();
  141. }
  142.  
  143.  
  144. HBRUSH useCtl3dCtlColorEx(UINT wm, WPARAM wParam, LPARAM lParam)
  145. {
  146. typedef HBRUSH (FAR PASCAL * LPCTL3DCTLCOLOREX)(UINT wm, WPARAM wParam, LPARAM lParam);
  147. LPCTL3DCTLCOLOREX lpCtl3dCtlColorEx;
  148.   if (!fCtlLoad) return FALSE;
  149.   lpCtl3dCtlColorEx =
  150.     (LPCTL3DCTLCOLOREX) GetProcAddress(hInstCtl3D,"Ctl3dCtlColorEx");
  151.   if (lpCtl3dCtlColorEx == NULL) return FALSE;
  152.   return (*lpCtl3dCtlColorEx)(wm,wParam,lParam);
  153. }
  154.  
  155.  
  156. LONG useCtl3dDlgFramePaint(HWND hwnd, UINT ui, WPARAM wp, LPARAM lp)
  157. {
  158. typedef LONG (FAR PASCAL *LPCTL3DDLGFRALEPAINT)(HWND, UINT, WPARAM, LPARAM);
  159. LPCTL3DDLGFRALEPAINT lpCtl3dDlgFramePaint;
  160.   if (!fCtlLoad) return FALSE;
  161.   lpCtl3dDlgFramePaint =
  162.     (LPCTL3DDLGFRALEPAINT)GetProcAddress(hInstCtl3D,"Ctl3dDlgFramePaint");
  163.   if (lpCtl3dDlgFramePaint == NULL) return FALSE;
  164.   return (*lpCtl3dDlgFramePaint)(hwnd,ui,wp,lp);
  165. }
  166.